package org.example.study2;

// Thread 的几个常见属性
public class Demo_203 {
    public static void main(String[] args) {
        Thread thread = new Thread(() -> {
            for (int i = 0; i < 10; i++) {
                try {
                    System.out.println(Thread.currentThread().getName() + ": 我还活着");
                    Thread.sleep(1 * 1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            // 退出循环

            System.out.println(Thread.currentThread().getName() + ": 我即将死去");

        });

        // 以上代码作用创建一个新线程thread，并定义其执行逻辑（通过Lambda表达式实现Runnable接口）
        // 线程的任务是循环10次，每次打印“我还活着”并休眠1秒
        // 循环结束后打印“我即将死去”。

        // 作用：打印线程的唯一标识符ID
        System.out.println(thread.getName()
                + ": ID: " + thread.getId());
        // 作用：打印线程名称，默认格式为Thread-N（N从0开始递增）
        System.out.println(thread.getName()
                + ": 名称: " + thread.getName());
        // 作用：打印线程的初始状态
        System.out.println(thread.getName()
                + ": 状态: " + thread.getState());
        // 作用：打印线程优先级
        System.out.println(thread.getName()
                + ": 优先级: " + thread.getPriority());
        // 作用：判断线程是否为守护线程（后台线程）
        System.out.println(thread.getName()
                + ": 后台线程: " + thread.isDaemon());
        // 作用：判断线程是否存活（已启动且未终止）
        System.out.println(thread.getName()
                + ": 是否存活: " + thread.isAlive());
        // 作用：判断线程是否被中断
        System.out.println(thread.getName()
                + ": 是否被中断: " + thread.isInterrupted());

        // 启动线程，申请真正的PCB，参与CPU调度
        // 注意：直接调用run()方法不会启动新线程，而start()会触发线程的异步执行
        thread.start();
        while (thread.isAlive()) {
            /*这个循环作用：主线程通过空循环等待子线程结束。
            问题：空循环会占用CPU资源，实际开发中应避免这种写法（可用thread.join()替代）*/
        }
        // 作用：子线程结束后打印其最终状态
        System.out.println(thread.getName()
                + ": 状态: " + thread.getState());
    }
}

/*输出：
        Thread-0: ID: 24
        Thread-0: 名称: Thread-0
        Thread-0: 状态: NEW
        Thread-0: 优先级: 5
        Thread-0: 后台线程: false
        Thread-0: 是否存活: false
        Thread-0: 是否被中断: false
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我还活着
        Thread-0: 我即将死去
        Thread-0: 状态: TERMINATED*/
